Django-তে Role-based Authorization এবং Permissions ব্যবস্থাপনা ব্যবহার করে আপনি অ্যাপ্লিকেশনের মধ্যে বিভিন্ন ধরনের ব্যবহারকারীর অধিকার এবং অনুমতিগুলি নিয়ন্ত্রণ করতে পারেন। এতে বিভিন্ন ব্যবহারকারী গ্রুপ এবং তাদের নির্দিষ্ট কাজের অধিকার সংক্রান্ত কাস্টম নিয়ম তৈরি করা সহজ হয়। Django একটি শক্তিশালী Authentication এবং Authorization সিস্টেম প্রদান করে, যা আপনাকে বিভিন্ন ধরনের নিরাপত্তা নিশ্চিত করতে সাহায্য করে।
Django তে Role-based Authorization
Role-based Authorization এর মাধ্যমে আপনি ব্যবহারকারীদের বিভিন্ন "ভূমিকা" (Role) নির্ধারণ করতে পারেন, যেমন Admin, Manager, Editor, User ইত্যাদি। প্রতিটি ভূমিকার জন্য আপনি নির্দিষ্ট Permissions (অধিকার) সেট করতে পারেন, যা সেই ভূমিকার সদস্যদের নির্দিষ্ট কাজ বা অ্যাকশন করতে অনুমতি দেয়।
Django তে সাধারণত Groups ব্যবহার করে Role-based Authorization পরিচালিত হয়। একটি গ্রুপ তৈরি করা হয়, এবং সেই গ্রুপের জন্য নির্দিষ্ট permissions প্রদান করা হয়। ব্যবহারকারী সেই গ্রুপে যোগ দিলে, তারা ওই গ্রুপের সমস্ত permissions পেয়ে যায়।
১. Group তৈরি করা
Django Admin Panel বা Django shell ব্যবহার করে গ্রুপ তৈরি করা যায়। নিচে এর একটি উদাহরণ দেওয়া হলো:
from django.contrib.auth.models import Group
# Create a new group
group = Group.objects.create(name='Editors')
২. Permission নির্ধারণ করা
Django-তে Permissions তৈরি করা হয়, যা ডিফল্টভাবে প্রতিটি মডেল (Model) এর জন্য ব্যবহৃত হয়। আপনি মডেলের জন্য প্রয়োজনীয় permission নির্ধারণ করতে পারেন।
from django.contrib.auth.models import Permission
# Create a permission
permission = Permission.objects.create(
codename='can_edit_posts',
name='Can edit posts',
content_type=my_content_type # ContentType object refers to the model
)
৩. গ্রুপে Permission যুক্ত করা
একটি গ্রুপে permissions যুক্ত করার জন্য, আপনাকে ওই গ্রুপের permissions ফিল্ডে permissions যোগ করতে হবে:
group.permissions.add(permission)
এখন, ওই গ্রুপের সকল সদস্য can_edit_posts permission পাবে।
৪. ব্যবহারকারীকে গ্রুপে যুক্ত করা
যখন আপনি একটি গ্রুপ তৈরি করেন এবং তার সাথে permissions সংযুক্ত করেন, তখন ব্যবহারকারীকে ওই গ্রুপে যোগ করলে, তাদের কাছে সেই গ্রুপের সমস্ত permission থাকবে।
from django.contrib.auth.models import User
# Add user to the group
user = User.objects.get(username='john_doe')
user.groups.add(group)
এখন, john_doe ব্যবহারকারী Editors গ্রুপের সদস্য এবং তাদের কাছে can_edit_posts permission থাকবে।
Django Permissions ব্যবস্থাপনা
Django তে Permissions ব্যবস্থাপনা খুবই সহজ এবং শক্তিশালী। Django ডিফল্টভাবে তিনটি সাধারণ permission দেয়: add, change, এবং delete। আপনি অতিরিক্ত কাস্টম permission তৈরি করতে পারেন এবং সেগুলো ব্যবহারকারীদের জন্য নির্ধারণ করতে পারেন।
১. ডিফল্ট Permissions
Django মডেল তৈরির সময় ডিফল্টভাবে নিম্নলিখিত permission তৈরি হয়:
add_<model_name>change_<model_name>delete_<model_name>view_<model_name>(Django 2.1 এর পর)
যেমন, যদি আপনার মডেলটি Post নামে হয়, তাহলে ডিফল্ট permissions হবে:
add_postchange_postdelete_postview_post
২. কাস্টম Permission তৈরি করা
আপনি যদি কাস্টম permission তৈরি করতে চান, তাহলে মডেল এর Meta ক্লাসে permissions ফিল্ড ব্যবহার করতে হবে।
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
class Meta:
permissions = [
("can_publish", "Can publish post"),
]
এখানে, can_publish নামের একটি কাস্টম permission তৈরি করা হয়েছে, যা ব্যবহারকারীদের পোস্ট পাবলিশ করার অনুমতি দেবে।
৩. Permission যাচাই করা
একটি নির্দিষ্ট permission যাচাই করতে, Django-র user.has_perm() মেথড ব্যবহার করা হয়। এটি চেক করে যে, ব্যবহারকারী নির্দিষ্ট permission পেয়েছে কিনা।
if request.user.has_perm('myapp.can_publish'):
# Allow the user to publish the post
else:
# Deny access
Django তে Role-based Authorization এবং Permission ব্যবস্থাপনা
Django তে Role-based Authorization এবং Permissions ব্যবস্থাপনার মাধ্যমে আপনি:
- ব্যবহারকারীদের বিভিন্ন ভূমিকা (Roles) অ্যাসাইন করতে পারেন, যেমন Admin, Editor, Subscriber ইত্যাদি।
- প্রতিটি ভূমিকার জন্য নির্দিষ্ট permissions নির্ধারণ করতে পারেন।
- Groups ব্যবহার করে বিভিন্ন ধরনের ভূমিকা তৈরি এবং ব্যবস্থাপনা করতে পারেন।
- কাস্টম permissions তৈরি করতে পারেন এবং সেগুলো ব্যবহারকারীদের জন্য নির্দিষ্ট করতে পারেন।
- ভিউ ফাংশন বা ক্লাস ভিত্তিক ভিউ (Class-Based Views) এ permission_required ডেকোরেটর ব্যবহার করে নিরাপত্তা নিশ্চিত করতে পারেন।
এইভাবে Django আপনাকে ব্যবহারকারীর ভূমিকা এবং অনুমতিগুলি সুষ্ঠু এবং নিরাপদভাবে পরিচালনা করতে সহায়তা করে।
সারাংশ
Django তে Role-based Authorization এবং Permissions ব্যবস্থাপনার মাধ্যমে আপনি গ্রুপ, ভূমিকা, এবং কাস্টম অনুমতির মাধ্যমে ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। Groups এবং Permissions এর মাধ্যমে আপনি সহজেই ভূমিকা নির্ধারণ করতে পারেন এবং has_perm() মেথড দিয়ে অনুমতি যাচাই করতে পারেন।
Read more